home *** CD-ROM | disk | FTP | other *** search
- // Copyright (c)1995 Ray Dream, Inc. All Rights Reserved.
- /*$Id: COMSphr.h 1.6 1997/06/20 22:32:39 damien Exp $*/
-
- //
- // COM Example of a Geometric Primitive based on Ray tracing / and Patches
- //
-
- #ifndef __COMSPHR__
- #define __COMSPHR__
-
- #ifndef __I3DEXPRM__
- #include "I3DExPrm.h"
- #endif
-
- #ifndef __SPHRDLL__
- #include "SPHRDLL.h"
- #endif
-
- // Component Object Model Definition :
-
- // define the Sphere CLSID
- // 3F9C3A80-895F-101C-8BFC-F629D50D262B
- DEFINE_GUID(CLSID_Sphere, 0x3F9C3A80L, 0x895F, 0x101C, 0x8B, 0xFC, 0xF6, 0x29, 0xD5, 0x0D, 0x26, 0x2B);
-
-
- // Sphere Object definition :
- // Sphere Object :
- #undef INTERFACE
- #define INTERFACE Sphere
- class Sphere : public I3DExGeometricPrimitive, public I3DExDataExchanger {
- public :
- Sphere();
- ~Sphere();
-
- // IUnknown Interface :
- STDMETHODIMP QueryInterface(THIS_ REFIID riid, LPVOID FAR* ppvObj);
- STDMETHODIMP_(ULONG) AddRef(THIS);
- STDMETHODIMP_(ULONG) Release(THIS);
-
- // I3DExtension method :
- STDMETHODIMP_(I3DExtension*) Clone(THIS);
- STDMETHODIMP ShellUtilitiesInit(THIS_ IShUtilities* shellUtilities);
-
- // I3DExDataExchanger methods :
- STDMETHODIMP_(ExtensionDataMap*) GetExtensionDataMap(THIS);
- STDMETHODIMP_(void*) GetExtensionDataBuffer(THIS);
- STDMETHODIMP ExtensionDataChanged(THIS);
- STDMETHODIMP HandleEvent(THIS_ ULONG sourceID);
- STDMETHODIMP_(short) GetResID(THIS);
-
- // I3DExGeometricPrimitiv methods
- // Geometric Calls
- STDMETHODIMP GetBBox(THIS_ BOX3D* bbox);
- STDMETHODIMP EnumPatches(THIS_ EnumPatchesCallback callback, void* privData);
- STDMETHODIMP EnumFacets(THIS_ EnumFacetsCallback callback, void* privData,NUM3D fidelity);
- STDMETHODIMP GetNbrLOD(short &nbrLod);
- STDMETHODIMP GetLOD(short lodIndex, NUM3D &lod);
- STDMETHODIMP MakeFacetMesh(THIS_ short index, FacetMesh &amesh);
- STDMETHODIMP MakeFacetMesh(THIS_ NUM3D lod,FacetMesh &amesh);
- // Shading Calls
- STDMETHODIMP_(ULONG) GetUVSpaceCount(THIS);
- STDMETHODIMP GetUVSpace(THIS_ ULONG uvSpaceID, UVSpaceInfo* uvSpaceInfo);
- STDMETHODIMP UV2XYZ(THIS_ VECTOR2D* uv,ULONG uvSpaceID, VECTOR3D* resultPosition, BOOLEAN* inUVSpace);
- // Ray tracing Calls
- STDMETHODIMP RayHit(THIS_ BOOLEAN* didHit, Ray3D* aR, RayHitParameters* RayHitParams, RayHit3D* hit);
- STDMETHODIMP GetRayHitDetails(THIS_ RayHit3D* hit);
- STDMETHODIMP RayAllHits(THIS_ Ray3D* aR, NUM3D tmin, NUM3D tmax, RayHit3D* hit, RayHitCallback callback, void* privData);
-
- private :
- void GetDetails(RayHit3D* hit);
- ULONG fCRef; // reference Counter
- };
-
- #endif // __SPHERE__
-